﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebHoiChoMuaBan.Models;
using System.IO;
using WebHoiChoMuaBan.Controllers.Utility;
using WebHoiChoMuaBan.Controllers.Helpers;

namespace WebHoiChoMuaBan.Controllers
{
    public class PageTypeController : Controller
    {
        //
        // GET: /PageType/
        [HttpPost]
        public ActionResult Index(FormCollection data, HttpPostedFileBase pageIcon, HttpPostedFileBase cateImg)
        {
            
            #region Insert category level1 ("Thời trang nữ")
            if (!String.IsNullOrEmpty(data.Get("ddlCateLevel1")) && String.IsNullOrEmpty(data.Get("ddlCateLevel2")))
            {
                Category cate = new Category();
                if (String.IsNullOrEmpty(data.Get("txtCateName")) || data.Get("txtCateName") != "Tạo danh mục...")
                {
                    cate.CateName = data.Get("txtCateName");
                    ViewData["CateName"] = data.Get("txtCateName");
                }
                else
                    ModelState.AddModelError("CateName", "Tên danh mục cấp 1 không được bỏ trống.");
                //int n = cate.PageId;
                //int? m = cate.ParentCateId;
                
                if (cateImg != null)
                {
                    ImageHelper imgHelper = new ImageHelper();
                    if (imgHelper.CheckInfoIcon(cateImg))
                    {
                        var fileName = Path.GetFileName(cateImg.FileName);
                        cate.CateIcon = fileName;
                        var path = Path.Combine(Server.MapPath("~/Content/Images/Upload"), fileName);
                        cateImg.SaveAs(path);
                    }
                    else
                        ModelState.AddModelError("CateImg", "Ảnh danh mục chỉ cho phép các định dạng (png,jpg,gif) và không lớn hơn 1MB.");
                }
                else
                    ModelState.AddModelError("CateImg", "Ảnh danh mục cấp 1 không được bỏ trống.");
                if(ModelState.Count == 0)//if(cate.IsValid)
                {
                    CategoryHelper cateHelper = new CategoryHelper();
                    cate.PageId = int.Parse(data.Get("ddlCateLevel1"));
                    cate.CateCount = 0;
                    cate.CateName = data.Get("txtCateName");
                    cateHelper.Add(cate);
                    cateHelper.Save();
                    return RedirectToAction("Index", "CreateCategory");
                }
                //else
                //{
                //    //Check if errors exist then print
                //    foreach (var issue in cate.GetRuleViolations())
                //    {
                //        ModelState.AddModelError(issue.PropertyName, issue.ErrorMessage);
                //    }
                //}
            }
            #endregion 
            
            #region Insert category level2 (Váy, áo sơ mi)
            if (!String.IsNullOrEmpty(data.Get("ddlCateLevel1")) && !String.IsNullOrEmpty(data.Get("ddlCateLevel2")))
            {
                Category cate = new Category();
                //cate.CateName = data.Get("txtCateName");
                //ViewData["CateName"] = data.Get("txtCateName");
                if (String.IsNullOrEmpty(data.Get("txtCateName")) || data.Get("txtCateName") != "Tạo danh mục...")
                {
                    cate.CateName = data.Get("txtCateName");
                    ViewData["CateName"] = data.Get("txtCateName");
                }
                else
                    ModelState.AddModelError("CateName", "Tên danh mục cấp 2 không được bỏ trống.");

                if (ModelState.Count == 0)//if (cate.IsValid)
                {
                    int cateId = int.Parse(data.Get("ddlCateLevel2"));
                    //int numOfCateLevel1 = (from cates in HelperBase.DataContext.Categories
                    //                      where cates.ParentCateId == cateId
                    //                      select cates.CateCount).Count();
                    CategoryHelper cateHelper = new CategoryHelper();
                    //Lấy danh mục cấp 1 để cập nhật catecount khi thêm mới 1 danh mục con
                    Category updateCate = cateHelper.GetCategoryById(cateId);
                    //updateCate.CateCount = numOfCateLevel1 + 1;
                    //cate.PageId = int.Parse(data.Get("ddlCateLevel1"));
                    cate.ParentCateId = cateId;
                    cate.CateName = data.Get("txtCateName");
                    cateHelper.Add(cate);
                    cateHelper.Save();
                    return RedirectToAction("Index", "CreateCategory");
                }
                //else
                //{
                //    //Check if errors exist then print
                //    foreach (var issue in cate.GetRuleViolations())
                //    {
                //        ModelState.AddModelError(issue.PropertyName, issue.ErrorMessage);
                //    }
                //}
            }
            #endregion

            #region Insert page
            if ( String.IsNullOrEmpty(data.Get("ddlCateLevel1")) && String.IsNullOrEmpty(data.Get("ddlCateLevel2")))
            {
                PageType page = new PageType();
                page.PageName = data.Get("txtCateName");
                ViewData["CateName"] = data.Get("txtCateName");
                page.PageUrl = data.Get("txtLinkInput");
                page.PageShowFooter = false;
                ViewData["PageType"] = page;
                
                if (pageIcon != null)
                {
                    ImageHelper imgHelper = new ImageHelper();
                    if (imgHelper.CheckInfoIcon(pageIcon))
                    {
                        var fileName = Path.GetFileName(pageIcon.FileName);
                        page.PageIcon = fileName;
                        var path = Path.Combine(Server.MapPath("~/Content/Images/Upload"), fileName);
                        pageIcon.SaveAs(path);
                    }
                    else
                        ModelState.AddModelError("pageIcon", "Icon chỉ cho phép các định dạng (png,jpg,gif) và không lớn hơn 1MB");
                }

                if (page.IsValid)
                {
                    PageTypeHelper helperPage = new PageTypeHelper();
                    helperPage.Add(page);
                    helperPage.Save();
                    ViewData["PageType"] = null;
                    return RedirectToAction("Index", "CreateCategory");
                }
                else
                {
                    //Check if errors exist then print
                    foreach (var issue in page.GetRuleViolations())
                    {
                        ModelState.AddModelError(issue.PropertyName, issue.ErrorMessage);
                    }
                }
            }
            #endregion
            return View("~/Views/Admin/CreateCategory.aspx");
        }
    }
}
